package com.middlegroup.subjectpay.service;

import com.middlegroup.common.model.SubjectpayQueryRequest;
import com.middlegroup.common.model.TransResult;
import com.middlegroup.subjectpay.dto.TransRequest;
import com.middlegroup.subjectpay.service.changpay.ChangpayCallbackRequest;

/**
 * Created by pc on 2019/1/14.
 */
public interface ChangpayService {


    /**畅捷支付单笔代付
     * @param request
     * @return
     */
    TransResult df(TransRequest request);

    /**畅捷支付单笔代付查询
     * @param request
     * @return
     */
    TransResult dfQuery(SubjectpayQueryRequest request);

    /**畅捷单笔代付回调
     * @param request
     * @return
     */
    String dfNotify(ChangpayCallbackRequest request);

    /**畅捷单笔代扣
     * @param request
     * @return
     */
    TransResult deduct(TransRequest request);

    /**畅捷支付单笔代扣查询
     * @param request
     * @return
     */
    TransResult deductQuery(SubjectpayQueryRequest request);

    /**畅捷单笔代扣回调
     * @param request
     * @return
     */
    String deductNotify(ChangpayCallbackRequest request);

    /**畅捷协议支付申请（首次）
     * @param request
     * @return
     */
    TransResult firstProtocolPayApply(TransRequest request);

    /**畅捷协议支付确认（首次）
     * @param request
     * @return
     */
    TransResult firstProtocolPayConfirm(TransRequest request);

    /**畅捷协议支付重发短信验证码（首次）
     * @param request
     * @return
     */
    TransResult firstProtocolPayReSendSMS(TransRequest request);

    /**畅捷协议支付扣款（二次）
     * @param request
     * @return
     */
    TransResult secondProtocolPay(TransRequest request);

    /**畅捷协议支付查询接口（首次，二次都用这个查询）
     * @param request
     * @return
     */
    TransResult protocolPayQuery(SubjectpayQueryRequest request);

    /**畅捷协议支付回调
     * @param request
     * @return
     */
    String protocolPayNotify(ChangpayCallbackRequest request);
}
